package annotation;

import java.lang.annotation.*;

/**
 * 元注解  4个标准元注解
 *      1.@Target  描述注解的使用范围
 *      2.@Retention  描述注解的生命周期（Source 编辑 < Class 编译 < Runtime 运行 【所有都有效】）
 *      3.@Documented  说明该注解是否生成在javadoc中
 *      4.@Inherited 说明子类可以继承父类中的该注解
 */
// 测试元注解
@MyAnnotation
public class Test1 {

    //@MyAnnotation  // 这里就不能用这个注解
    private String str;

    @MyAnnotation
    public void test(){}
}

@Target(value = {ElementType.METHOD, ElementType.TYPE})   //目标，注解只在方法、类上有效
@Retention(value = RetentionPolicy.RUNTIME)  // 只在运行时有效,只能选择生命周期中的一个状态
@Documented   // 注解是否生成在javadoc中
@Inherited    // 子类可以集成父类的注解
@interface MyAnnotation{}
